Internet software configured for Internet access is notoriously insecure, and it is a challenge to the industry to increase security. While in theory it is possible to simply filter incoming traffic to ensure security, such a goal in practice leads to a Sisyphean arms race. In this application, when capitalized, the term “Internet” refers to any collection of networks and gateways that use the TCP/IP suite of protocols.
Some prior art attempts to increase security have run internet software configured for Internet access remotely to reduce the incidence of any damage to a user computer, and centralize any damage to a server that is more readily cured by administrators. Such attempts fail to maximize user satisfaction however, as users enjoy customizing their web browsing experience. Additionally, prior art attempts have required partitions to a user workstation or have undesirably limited the number of software configured for Internet access running on a server.
A virtual machine is a virtual computer component that resides only in memory. An exemplary virtual machine, the Java Virtual Machine (“JVM”) allows Java® programs to be executed on different platforms as opposed to only the one platform for which the code was compiled. Java programs are compiled for the JVM. In this manner, Java is able to support applications for many types of data processing systems, which may contain a variety of central processing units and operating systems architectures. To enable a Java application to execute on different types of data processing systems, a compiler typically generates an architecture-neutral file format. The compiled code is executable on many processors, given the presence of the Java run-time environment. The Java compiler generates bytecode instructions that are non-specific to particular computer architectures. A bytecode is a machine independent code generated by the Java compiler and executed by a Java interpreter. A Java interpreter is a module in the JVM that alternatively decodes and executes a bytecode or bytecodes. These bytecode instructions are designed to be easy to interpret on any machine and easily translated on-the-fly into native machine code.
It is therefore a challenge to develop a method to increase browsing security to overcome these, and other, disadvantages.